A system configuration is a set of configuration entities, and their relations to each other. The configuration defines the arrangement and the order that the system is to obey. At runtime the configuration may need to be modified by different actors to meet certain/new requirements or respond to performance degradations or upgrade purposes. The reconfiguration has to respect the consistency rules of the configuration to avoid service outage. The consistency rules include a set of structural integrity requirements and application/domain constraints.
The capability of runtime configuration validation is a prerequisite for self-managing systems with dynamic reconfiguration capabilities (e.g., the cloud) as these systems need to detect any potential inconsistencies. The capabilities of runtime validation and dynamic reconfiguration are especially needed in systems with high availability (HA) requirements. It is not acceptable to shut down or restart HA systems due to the need for validation and/or reconfiguration.
Preserving the configuration consistency is a main functionality of a validation module of a system. It is desired that real-time systems provide this functionality at runtime with minimal overhead, e.g., by performing the minimum needed checks. However, configurations may consist of hundreds of entities, with complex relations and constraints. Thus, validation time can grow to the extent that it becomes impractical to perform runtime configuration validation.
In this context, most of the research studies focus on the structural checking of the functional configuration parameters (e.g., type correctness, checking the validity of the values of the system entities' attributes with respect to the constraints of each entity and the relation between the entities). These solutions either are platform-dependent or focus on the correctness of the runtime validation.